
package edu.uoc.tdp.client.proves;

import edu.uoc.tdp.beans.proves.EstatProva;
import java.io.Serializable;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;

/**
 *  Classe que modela un Abstract Model personalitzat per carregar un JTable
 * @author Grup 1X4J
 */


public class modelDadesPreguntaResposta extends AbstractTableModel implements Serializable{
 
    final String[] nomColumnes;
    final Object[][] dades;
    private EstatProva estat;
    /**
     *  Constructor amb tres paràmetres
     * @param Pcol              Titols de les columenes de la taula
     * @param Pdades            Files de la taula
     * @param pEstat            Estat, ens serveix per habilitar o no les files
     */
    public modelDadesPreguntaResposta(String[]Pcol, Object[][] Pdades, EstatProva pEstat){
        this.nomColumnes=Pcol;      
        this.dades=Pdades;
        this.estat=pEstat;
    }
    /**
     * Accessor de lectura. Obté el total de files de la taula
     * @return Total de files
     */    
    public int getRowCount() {
        return dades.length;
    }
    /**
     * Accessor de lectura. Obté el total de columnes de la taula
     * @return Total de columnes
     */
    public int getColumnCount() {
           return nomColumnes.length;
    }
    /**
     * Accessor de lectura. Obté el nom de la columna de la taula
     * @param col       Index de la columna
     * @return 
     */
    public String getColumnName(int col) {
        return nomColumnes[col];
}
    /**
     * Accessor de lectura, Obté l'objecte emmagatzemat en una casella de la taula
     * @param rowIndex          Fila 
     * @param columnIndex       Columna
     * @return Objecte
     */
    public Object getValueAt(int rowIndex, int columnIndex) {
        return dades[rowIndex][columnIndex];

    }
    /**
     * Accessor de lectura. Obté el tipus d'objecte que s'emmagatzema en una columna de la taula
     * @param c         index de la columna
     * @return  Tipus d'objecte
     */
    public Class getColumnClass(int c){
        return getValueAt(0,c).getClass();
    }
    /**
     * Accessor d'escriptura. Anota el valor de l'objecte d'una casella de la taula
     * @param value
     * @param row
     * @param col 
     */
     public void setValueAt(Object value, int row, int col){        
        
         for(int i =1;i<=4;i++){
             if (i==col){
                 dades[row][i]=value;
             }
             else{
                 dades[row][i]=false;
             }
            fireTableCellUpdated(row,i);         
        }
         
          
    }
     /**
      * Accessor modificador. habilita o desahabilita les caselles de la taula
      * @param row          index de la fila
      * @param col          index de la columna
      * @return cert habilitat, fals en cas contrari.
      */
    public boolean isCellEditable(int row,int col){        
        if(estat==null || estat==EstatProva.INICIAL ){
            return (col==0)?false:true;
        }
        return false;
    }
      
}
